package com.demo.com.highavailability.context;

import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

/**
 * 线程上下文管理器 - 实现业务操作的线程级隔离
 * 每个线程拥有独立的业务资源，互不干扰
 */
public class BusinessContextHolder {

    private static final ThreadLocal<Map<String, Object>> context =
        ThreadLocal.withInitial(ConcurrentHashMap::new);

    /**
     * 设置业务上下文属性
     * @param key 属性键
     * @param value 属性值
     */
    public static void setAttribute(String key, Object value) {
        context.get().put(key, value);
    }

    /**
     * 获取业务上下文属性
     * @param key 属性键
     * @return 属性值
     */
    public static Object getAttribute(String key) {
        return context.get().get(key);
    }

    /**
     * 清理线程上下文，防止内存泄漏
     */
    public static void clear() {
        context.remove();
    }
}